#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QResizeEvent>
#include <QPair>
#include <QFile>
#include <QPainter>
#include <QMessageBox>

#include "dialog_select.h"

using std::optional;

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void resizeEvent(QResizeEvent* event);

private slots:
    void on_just_do_clicked();

    void on_commit_clicked();

    void reset_table();

    void on_select_clicked();

    void on_tabs_currentChanged(int index);

private:
    Ui::MainWindow *ui;
    Code::Table table;
    QList<QPair<QWidget*,QSize>> lock_ui;
    QList<QPair<QWidget*,int>> locat_ui;
    void lock_size(QWidget* widget);        // 该组件的大小将随着窗口大小自动改变
    void lock_pos(QWidget* widget);     // 该组件的位置将随着窗口大小自动改变
    void paste(double scale =paste_scale);      // 截图
    Code::Selector selector;
    Dialog_select window {this};
    void read_plain_text();     // 读取表格纯文本到代码编辑框中，以纠正格式
    void commit();      // 采纳代码编辑框的文本
};

#endif // MAINWINDOW_H
